//Copyright 2012 Trevin Liberty
//GNU GPL v3
//Author: Trevin Liberty
//
//Contains all information regarding the
//amount of bitmaps to be drawn to the screen.

#ifndef CAMERA_H
#define CAMERA_H

#include "Point.h"

//Holds display width and height along with a position.
//Mainly used to keep track of a position and make sure
//	said position doesn't pass outside of the MAX window size.
//	(tileSize*numTiles)
class Camera {
private:
	Point<float> pos;

	int SCREEN_X;
	int SCREEN_Y;

	int tileSize;
	int numTilesX;
	int numTilesY;
public:
	//Constructor
	//	PARAMS:
	//int screenX: System window width in pixels
	//int screenY: System window height in pixels
	//int numTilesX: The maximum number rows of tiles. SEE: Structs.h->Struct Map {...}
	//int numTilesY: The maximum number columns of tiles. SEE: Structs.h->Struct Map {...}
	Camera(int screenX, int screenY, int tileSize, int numTilesX, int numTilesY);

	//Returns the position of the Camera.
	Point<float> getXY() const {return pos;}
	
	//Sets the position of the Camera.
	//	PARAMS:
	//Point<float> pos: New position of the camera. 
	//	Doesn't have to be within min/max screen bounds.
	//	SEE: Point.h
	void setXY(Point<float> pos);

	//Sets new screen max bounds.
	void setScreenMaxXY(int maxX, int maxY);

	//Moves the camera position by t
	void addToX(int t);

	//Moves the camera position by t
	void addToY(int t);
};

#endif